《Trino 地端架設與調參》系列將講述如何自地端 (Local) 起一個 Trino toy example
,從所需的配置文件 (configuration files) 介紹起,到如何從設定配置文件參數值,以及如何透過執行腳本執行 toy example,期望能帶給想自己玩玩的讀者一些幫助。
在進行 toy example
的部署之前,先載明本文所使用之版本資訊、地端環境以及作業系統資訊,以利讀者復現 :
版本
Iterm2 3.5.11
: 主要作為 terminal 使用,搭配 oh my zash 套件使用起來個人感覺還不錯,附上載點。Docker 27.5.1
: 容器化工具,不在此贅述功能,相信同行讀者們已對此工具熟稔於心,可用 brew install 安裝。OrbStack 1.10.2
: 輕量化容器管理工具,跑起來速度屌打 Docker Desktop,可惜只有 Mac 可以使用,可用 brew install 安裝。Trino 471
: 當初開發公司專案時使用的版本號,截至撰文時 Trino 已更新至 472,讀者們可視需求更改版本號。Java 23.0.2
+ 64 bits: 官方認證最適合運行 Trino 的 Java 版本,版本更低不支援;更高沒測試過,有興趣的讀者可自行替官方測試。Python 3.10.0
: 初始化 Makefile 時會安裝 poetry、pre-commit ,依賴於 python 環境,讀者若不需要可自行從 Makefile 中移除。Pyenv 2.4.1
: 用於建立地端虛擬 Python 環境。地端機器
虛擬環境建立
# 安裝 python 3.10
pyenv install 3.10
# 切換地端環境至 python 3.10
pyenv local 3.10
# 建立地端虛擬環境
python -m venv trino-env
# 使用新建環境
source trino-env/bin/activate
完成前置作業後,就可以來起 Trino toy example 了,首先將本文的 Repo 拉取至地端後,再照以下步驟依序執行:
將本文的 Repo 拉取置地端後,即可以 make file 建立 Trino image,附上 make file 指令以及 Trino Dockerfile 如下:
# 初始化 make file
make init
# 建立 Trino image
make build profiles=trino
# Trino Dockerfile
ARG TRINO_VERSION
ARG OPENJDK_VERSION
# 固定 trino 及 java 的版本
FROM openjdk:${OPENJDK_VERSION}
FROM trinodb/trino:${TRINO_VERSION}
建立完 Trino image 後,即可開始設定集群配置文件的參數,裡面包括 :
node.properties
: 設定節點的 ID、資料目錄等,集群內各成員都要做設定,本文 toy example 組態包含 coordinator * 1 worker * 2jvm.config
: 設定 Trino *JVM 的記憶體大小,本文統一設定 16 GBconfig.properties
: 設定節點在集群中扮演的角色,故 coordinator 與 worker 的設定會不相同,*官方文檔 有提供各自的最小設定log.properties
: 設定 log 層級,因為是 toy example 所以這邊都設 INFO ,若有除錯的需求修改為 DEBUG 再重啟即可catalog/
: Trino 連線資料源設定目錄,詳細留待下篇分解,下篇將連同 Trino CLI 的使用、各資料源的設定及查詢一併解說*JVM 記憶體
由於 Trino 是 JAVA-based 的查詢引擎,JVM 主宰了 Trino 的查詢效能
官方建議設定為節點的 70% ~ 85% 左右,本文使用的 Orbstack 有限制記憶體(下圖)
所以不用擔心設滿 16GB 本地端記憶體會被 container 吃光。
*config.properties-coordinator 最小設定:
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
discovery.uri=http://example.net:8080
*config.properties-worker 最小設定:
coordinator=false
http-server.http.port=8080
discovery.uri=http://example.net:8080
系列文明日《Trino 地端架設與調參 (二)》,我們將繼續動手折騰地端 Trino Cluster,探索 HTTP 與 UI 的各種設定,並親眼見證它在本機順利啟動、跑起來的模樣。
My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/